home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 31
/
Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso
/
Aminet
/
util
/
misc
/
rgbpch.lha
/
rgbpch
/
rgbpatch.asm
< prev
next >
Wrap
Assembly Source File
|
1999-04-15
|
3KB
|
122 lines
*
* SetRGB32 patch
*
* LoadRGB32()
* SetRGB32()
* SetRGB32CM()
include "exec/macros.i"
include "lvos/exec_lib.i"
xdef _pSTART
xdef _pEND
xdef _setfnc
_pSTART
******************************************************************
_pLoadRGB32 movem.l d0-d7/a0-a6,-(sp)
tst.l a1
beq .lend
moveq #-1,d1 ; test 0xffffffff
.lnt clr.l d0
move.w (a1),d0 ; read 'count'
beq .lend ; table over
subq.l #1,d0 ; fix counter
addq.l #4,a1 ; skip 'count.w'&'first color.w'
.lc cmp.l (a1),d1 ; RED
bne .lec
cmp.l 4(a1),d1 ; GREEN
bne .lec
cmp.l 8(a1),d1 ; BLUE
bne .lec
sub.l #$01010101,(a1) ; max white -> 0xfefefefe
sub.l #$01010101,4(a1)
sub.l #$01010101,8(a1)
.lec addq.l #8,a1 ; next item
addq.l #4,a1
dbra d0,.lc
bra .lnt
.lend movem.l (sp)+,d0-d7/a0-a6
jmp ([_pOldLoadRGB32,pc])
;-----------------------------------------------------------------
_pOldLoadRGB32 dc.l 0
******************************************************************
_pSetRGB32 movem.l d0/d4-d7/a0-a6,-(sp)
moveq #-1,d0
cmp.l d0,d1 ; RED
bne .send
cmp.l d0,d2 ; GREEN
bne .send
cmp.l d0,d3 ; BLUE
bne .send
sub.l #$01010101,d1 ; max white -> 'fe's
sub.l #$01010101,d2
sub.l #$01010101,d3
.send movem.l (sp)+,d0/d4-d7/a0-a6
jmp ([_pOldSetRGB32,pc])
;-----------------------------------------------------------------
_pOldSetRGB32 dc.l 0
******************************************************************
_pSetRGB32CM movem.l d0/d4-d7/a0-a6,-(sp)
moveq #-1,d0
cmp.l d0,d1 ; RED
bne .scend
cmp.l d0,d2 ; GREEN
bne .scend
cmp.l d0,d3 ; BLUE
bne .scend
sub.l #$01010101,d1 ; max white -> 'fe's
sub.l #$01010101,d2
sub.l #$01010101,d3
.scend movem.l (sp)+,d0/d4-d7/a0-a6
jmp ([_pOldSetRGB32CM,pc])
;-----------------------------------------------------------------
_pOldSetRGB32CM dc.l 0
_pEND
* a0: mem
* a1: gfxbase
_setfnc movem.l d0-d7/a0-a6,-(sp)
move.l #_pEND,d0
sub.l #_pSTART,d0
move.l #_pSTART,d1
move.l d1,a2
moveq #0,d1
.ck move.b (a2,d1.l),(a0,d1.l)
addq.l #1,d1
dbra d0,.ck
move.l $00000004,a6
move.l a1,a5
move.l a0,a3
move.l a5,a1
move.l a3,d0
add.l #_pLoadRGB32-_pSTART,d0
move.w #-882,a0
jsr _LVOSetFunction(a6)
move.l d0,_pOldLoadRGB32-_pSTART(a3)
move.l a5,a1
move.l a3,d0
add.l #_pSetRGB32-_pSTART,d0
move.w #-852,a0
jsr _LVOSetFunction(a6)
move.l d0,_pOldSetRGB32-_pSTART(a3)
move.l a5,a1
move.l a3,d0
add.l #_pSetRGB32CM-_pSTART,d0
move.w #-996,a0
jsr _LVOSetFunction(a6)
move.l d0,_pOldSetRGB32CM-_pSTART(a3)
movem.l (sp)+,d0-d7/a0-a6
rts